package com.krubi.service;

import java.util.List;

import org.springframework.security.context.SecurityContextHolder;

import com.krubi.dao.UsuarioDao;
import com.krubi.model.Usuario;

import flex.messaging.FlexContext;

public class UsuarioServiceImpl implements UsuarioService
{
	private UsuarioDao usuarioDao;
	
	public List<Usuario> obtenerUsuarios()
	{
		return usuarioDao.findAll();
	}
	
	public List<Usuario> agregarUsuario(Usuario usuario)
	{
		usuarioDao.merge(usuario);
		return obtenerUsuarios();
	}
	
	public Usuario actualizarUsuario(Usuario usuario)
	{
		return (Usuario)usuarioDao.merge(usuario);
	}
	
	public void setUsuarioDao(UsuarioDao pUsuarioDao)
	{
		usuarioDao = pUsuarioDao;
	}
	
	public void borrarUsuarioPorEmail(String email)
	{
		usuarioDao.borrarUsuarioPorEmail(email);
	}
	
	public void borrarUsuarioPorNombreDeUsuario(String nombreUsuario)
	{
		usuarioDao.borrarUsuarioPorNombreDeUsuario(nombreUsuario);
	}
	
	public Usuario obtenerUsuarioPorNombreDeUsuario(String nombreUsuario) 
	{
		return usuarioDao.buscarPorNombreDeUsuario(nombreUsuario);
	}
	
	public void doLogout() 
	{
		try 
		{
			//String nombreUsuario = SecurityContextHolder.getContext().getAuthentication().getName();
			FlexContext.setUserPrincipal(null);
			FlexContext.getHttpRequest().getSession().invalidate();
			FlexContext.getFlexSession().invalidate();
			SecurityContextHolder.clearContext();
		} 
		catch (RuntimeException e) 
		{
			//dosomething like logging
		}
	}
	
}
